﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using ERP_RORZE_DLL.Product;
using ERP_RORZE_DLL.Product.database;
using ERP_RORZE_DLL.Product.DAO;
using ERP_RORZE_PERMISSION.Base;

namespace ERP_RORZE_PRODUCT.Product.MO
{
    public partial class frm_MONoUpdate : DevExpress.XtraEditors.XtraForm
    {
        ClsBusOderDAO clsBusOderDAO = new ClsBusOderDAO();
        DataTable dt;
        ClsBusOderTable b = new ClsBusOderTable();
        ClsMOTable obj = new ClsMOTable();
        ClsMOTable MO = new ClsMOTable();
        ClsMOOptionTable MOO = new ClsMOOptionTable();
        ClsMODAO clsMODAO = new ClsMODAO();
        public event EventHandler Reload;
        private LogUtils log;

        public frm_MONoUpdate()
        {
            InitializeComponent();
            log = new LogUtils();
        }

        private void ctrlMONoUpdate_Load(object sender, EventArgs e)
        {
            dt = clsBusOderDAO.GetAllMONoUpdate();
            List<ClsBusOderTable> objs = new List<ClsBusOderTable>();
            foreach (DataRow r in dt.Rows)
            {
                ClsBusOderTable obj = new ClsBusOderTable();
                obj.BOderNo = r["BOderNo"].ToString();  //
                obj.PlanNo = r["planNo"].ToString();   ////
                obj.Dealine = (DateTime)r["Deadline"];
                //obj.MONo = r["MONo"].ToString();     ////
                //obj.Finished = (bool)r["Finished"];  ////
                obj.Imported = (bool)r["Imported"];  ////
                //obj.MOQty = (int)r["MOQty"];////
                obj.Qty = (int)r["Qty"]; /////
                obj.PartID = r["PartID"].ToString();
                objs.Add(obj);
            }

            cbBOder.DataSource = objs;
            cbBOder.DisplayMember = "BOderNo";
            cbBOder.ValueMember = "BOderNo";
        }

        private void cbBOder_SelectedIndexChanged(object sender, EventArgs e)
        {
            ClsBusOderTable obj = ((ClsBusOderTable)cbBOder.SelectedItem);
            txtPlanNo.Text = obj.PlanNo.ToString();
            txtOrderQty.Text = obj.Qty.ToString();
            checkImported.Checked = bool.Parse(obj.Imported.ToString());
            dateDeadline.Value = DateTime.Parse(obj.Dealine.ToString());
            //txtNewMOQtyDuoi.Text = obj.MOQty.ToString();
            //txtNewMONoDuoi.Text = obj.MONo.ToString();
            txtPartID.Text = obj.PartID.ToString();

        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (txtNewMONo.Text == "")
            {
                MessageBox.Show("NewMONo không được để trống");
            }
            else if (txtNewMOQty.Text == "")
            {
                MessageBox.Show("NewMOQty không được để trống");
            }
            else
            {
                obj.MONo = txtNewMONo.Text;
                dt = clsMODAO.GetAllMONo(obj);
                int i = 0;
                foreach (DataRow r in dt.Rows)
                {
                    i++;
                }
                if (i > 0)
                {
                    MessageBox.Show(txtNewMONo.Text + " đã có trong dữ liệu rồi");
                }
                else
                {
                    try
                    {
                        int a = int.Parse(txtNewMOQty.Text);
                        int c = int.Parse(txtOrderQty.Text);

                        if (c - a > 0)
                        {
                            MessageBox.Show("Số lượng mới nhỏ hơn số lượng của phòng KD");
                        }
                        else
                        {
                            if (txtNewMONoDuoi.Text == "" && txtNewMOQtyDuoi.Text == "")
                            {
                                txtNewMOQtyDuoi.Text = txtNewMONo.Text;
                                txtNewMONoDuoi.Text = txtNewMOQty.Text;
                            }
                            // cập nhật vào BusOder
                            b.MONo = txtNewMONo.Text;
                            b.MOQty = int.Parse(txtNewMOQty.Text);
                            b.BOderNo = cbBOder.SelectedValue.ToString();
                            clsMODAO.UpdateBusMONo(b);

                            //write Log
                            log.Table = LogConstant.Table.Product.BusOrderList;
                            log.Task = LogConstant.Task.Update;
                            log.Description = "MONo: " + b.MONo + "; MOQty: " + b.MOQty + " where BOrderNo: " + b.BOderNo;
                            log.WriteLog();

                            // cập nhật vào MO

                            obj.Date = DateTime.Now;
                            obj.BlastQty = 0;
                            obj.MONo = txtNewMONo.Text;
                            obj.MOQty = int.Parse(txtNewMOQty.Text);
                            obj.DeadLine = dateDeadline.Value;
                            obj.Imported = checkImported.Checked;
                            obj.HelisertQty = 0;
                            obj.PartID = txtPartID.Text;
                            clsMODAO.InsertMO(obj);

                            //write Log
                            log.Table = LogConstant.Table.Product.MOList;
                            log.Task = LogConstant.Task.Update;
                            log.Description = "MONo: " + obj.MONo + "; PartID: " + obj.PartID + "; Date: " + obj.Date;
                            log.WriteLog();

                            MessageBox.Show("Đã cập nhật vào BusOrder và MO List thành công");
                            //Reload(sender, e);
                            txtNewMONo.Text = "";
                            txtNewMOQty.Text = "";
                            cbBOder.Focus();

                        }
                    }
                    catch
                    {
                        MessageBox.Show("New MOQty phải là số nguyên");
                    }
                }
            }
        }
        protected override bool ProcessKeyPreview(ref Message m)
        {
            if (m.Msg == 0x0100 && (int)m.WParam == 13)
            {
                this.ProcessTabKey(true);
            }
            return base.ProcessKeyPreview(ref m);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
